package com.novel.common.exception;


import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

/**
 * 自定义控制器增强器
 * 这个类就是对控制器进行增强
 * 而这里主要对控制器发生异常的部分增强
 * 这个方法会在启动类启动的时候被扫描，所以不需要担心出问题
 */
@ControllerAdvice//控制器增强注解，表示这是一个对控制器增强的类
public class BasicExceptionAdvice {

    //自定义类的异常处理增强
    @ExceptionHandler(CustomerException.class)//表示异常处理器，内部的值是表示它可以处理那些异常
    public ResponseEntity<ExceptionResult> handlerDiyException(CustomerException e) {
        ExceptionResult result = new ExceptionResult(e);
        return ResponseEntity.ok(result);
    }

    //系统类型的异常处理增强
    @ExceptionHandler(Exception.class)//表示异常处理器，内部的值是表示它可以处理那些异常
    public ResponseEntity<ExceptionResult> handlerException(Exception e) {
        return ResponseEntity.ok(new ExceptionResult(e.getMessage()));
    }
}
